package sparkcore.day5.lesson01;

/**
 * Created by Administrator on 2018/4/27.
 *
 *
 * 1)首先 idea工具会会帮我们进行编译。
 *    生成两个class文件：HelloJVM.class Student.class文件
 * 2）开始运行代码，就会启动JVM。这个时候，我们的类加载器 会根据类加载的路径
 *    去加载具有main方法的.class文件。
 *    就我们的整个例子而言，那么应该加载的就是：HelloJVM.class
 *    就会把这个文件信息加载到方法区里面
 * 3）开始运行我们的main方法。
 *      Student aura = new Student("aura");
 *      a:首先执行的是这段代码
 *      这段代码运行，那么我们的JVM就会去方法区里面去加载Student的类信息。
 *      但是这个时候发现没有 这个类的信息，接着就会使用类加载器去加载
 *      b:Student的类信息，然后加载到方法区里面。
 *      接着就会在堆内存里面会给这个aura分配内存，用于存储这个实例对象
 *      并且这个实例中会持有指向方法区中的Student的引用。（不然我们后面怎么可能进行方法的调用呢）
 *      c:上面我们在内存区域里面开辟了空间存储了Student实例（具有了内存地址）
 *        会把这个引用 赋值给这个变量aura， 这个变量就存在栈内存里面。
 *      d: 接下来执行的是  aura.sayHello();
 *         首先该线程里面创建frame  存入栈里面
 *         方法调用完了以后 就出栈。
 *
 */
public class HelloJVM {
    public static void main(String[] args) {
        Student aura = new Student("aura");
         aura.sayHello();
    }
}
